package com.toubutu.audio.service;

import com.toubutu.audio.admin.dto.AdminVideoQueryDto;
import com.toubutu.audio.admin.dto.MergeFileDto;
import com.toubutu.audio.admin.dto.UploadFileDto;
import com.toubutu.audio.admin.dto.VideoDto;
import com.toubutu.audio.dto.CheckFileExistDto;
import com.toubutu.audio.dto.PageQueryVideoDto;
import com.toubutu.audio.vo.SeqVideoItem;
import com.toubutu.audio.vo.VideoListItemVo;
import com.toubutu.audio.vo.VideoVo;
import com.toubutu.audio.entity.Video;
import com.baomidou.mybatisplus.extension.service.IService;
import com.toubutu.common.PageUtils;

import java.io.IOException;
import java.util.Collections;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 戒躁
 * @since 2024-01-08
 */
public interface VideoService extends IService<Video> {

    /**
     * 后台获取视频列表
     * @param dto 查询参数
     * @return list
     */
    PageUtils<VideoVo> pageQueryAdminVoList(AdminVideoQueryDto dto);

    String uploadVideo(UploadFileDto uploadFileDto) throws IOException;

    /**
     * 根据影片编码获取影片信息
     * @param code 影片编码
     * @return videoInfo
     */
    VideoVo getVideoInfoByCode(String code);

    /**
     * 发布视频
     * @param videoDto 视频信息参数
     */
    void publishVideo(VideoDto videoDto);

    /**
     * 修改视频信息
     * @param videoDto 视频信息
     */
    void updateVideo(VideoDto videoDto);

    /**
     * 合并视频切片
     * @param mergeFileDto 合并视频切片参数
     */
    void mergeVideoFile(MergeFileDto mergeFileDto);

    /**
     * 前台获取视频列表接口
     * @param queryVideoDto 查询参数
     * @return PageUtils<VideoListItemVo>
     */
    PageUtils<VideoListItemVo> getVideoList(PageQueryVideoDto queryVideoDto);

    List<VideoListItemVo> getRangeVideoList(Integer size);

    List<VideoListItemVo> getVideoItemListByVideoCode(List<String> videoCodeList);

    List<SeqVideoItem> getVideoSeqList(Integer videoId);

    Boolean checkVideoSourceIsExist(CheckFileExistDto dto);
}
